export const BATTLE_SKILL_TYPE = {
  /** 物理攻击 */
  PHYSICAL: 'PHYSICAL',
  /** 魔法攻击 */
  MAGIC: 'MAGIC',
  /** 治疗 */
  HEAL: 'HEAL',
  /** BUFF */
  BUFF: 'BUFF',
  /** DEBUFF */
  DEBUFF: 'DEBUFF',
  /** 消除 DEBUFF */
  CLEANSE: 'CLEANSE',
  /** 护盾 */
  SHIELD: 'SHIELD',
} as const;

export type BattleSkillType =
  (typeof BATTLE_SKILL_TYPE)[keyof typeof BATTLE_SKILL_TYPE];

/**
 * 技能目标类型枚举
 */
export const BATTLE_SKILL_TARGET = {
  /** 敌方单位(一个) */
  ENEMY: 'ENEMY',
  /** 友方单位（一个） */
  TEAMMATE: 'TEAMMATE',
  /** 自己 */
  SELF: 'SELF',
  /** 所有敌方单位 */
  ALL_ENEMIES: 'ALL_ENEMIES',
  /** 所有友方单位 */
  ALL_ALLIES: 'ALL_ALLIES',
} as const;

export type BattleSkillTarget =
  (typeof BATTLE_SKILL_TARGET)[keyof typeof BATTLE_SKILL_TARGET];

/**
 * 技能计算属性枚举
 */
export const BATTLE_SKILL_ATTRIBUTE = {
  /** 基于攻击力 */
  ATTACK: 'ATTACK',
  /** 基于防御力 */
  DEFENSE: 'DEFENSE',
  /** 基于速度 */
  SPEED: 'SPEED',
  /** 基于最大生命值 */
  MAX_HEALTH: 'MAX_HEALTH',
  /** 基于当前生命值 */
  CURRENT_HEALTH: 'CURRENT_HEALTH',
} as const;

export type BattleSkillAttributeKey =
  (typeof BATTLE_SKILL_ATTRIBUTE)[keyof typeof BATTLE_SKILL_ATTRIBUTE];

export type BattleSkillAttribute = {
  [K in BattleSkillAttributeKey]: number;
};

/**
 * 技能效果接口
 */
export interface BattleSkillConfigEffect {
  /** 效果类型 */
  type: BattleSkillType;
  /** 效果值 */
  value?: number;
  /** 效果持续时间（回合数） */
  duration?: number;
  /** 效果属性（如攻击力、防御力等） */
  attribute?: string;
  /** 触发概率（0-1） */
  chance?: number;
}

export interface BattleSkillConfig {
  /** 技能唯一标识 */
  id: string;
  /** 技能名称 */
  name: string;
  /** 技能描述 */
  description?: string;
  /** 技能类型 */
  type: BattleSkillType;
  /** 目标类型 */
  target: BattleSkillTarget;
  /** 基础值（固定值部分） */
  baseValue: number;
  /** 计算倍率 */
  multiplier?: number;
  /** 基于哪个属性计算 */
  baseAttribute: BattleSkillAttributeKey;
  /** 消耗（如法力值、能量等） */
  cost?: number;
  /** 冷却时间（回合数） */
  cooldown?: number;
  /** 附加效果 */
  effects?: BattleSkillConfigEffect[];
}

const BATTLE_SKILL_ID = {
  /** 普通攻击 */
  NORMAL_ATTACK: 'NORMAL_ATTACK',
} as const;

export const NORMAL_ATTACK: BattleSkillConfig = {
  id: BATTLE_SKILL_ID.NORMAL_ATTACK,
  name: '普通攻击',
  description: '根据攻击力造成物理伤害。',
  type: BATTLE_SKILL_TYPE.PHYSICAL,
  target: BATTLE_SKILL_TARGET.ENEMY,
  baseValue: 10,
  baseAttribute: BATTLE_SKILL_ATTRIBUTE.ATTACK,
};

export const BATTLE_SKILL_DATA: BattleSkillConfig[] = [NORMAL_ATTACK];
